#ifndef CCM_REG_ST_H
#define CCM_REG_ST_H
#include "cc.h"

#define REG_BITVAL(C, F) ((C##_##F##_t *)(&(C->F)))
#define BIN(V) 0b##V##UL
#define _B(L) ((L) + 1)

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t OSCNT : _B(6 - 0);
    __IO uint32_t Reserved_1 : _B(11 - 7);
    __IO uint32_t COSC_EN : _B(12 - 12);
    __IO uint32_t Reserved_2 : _B(20 - 13);
    __IO uint32_t REG_BYPASS_COUNT : _B(26 - 21);
    __IO uint32_t RBC_EN : _B(27 - 27);
    __IO uint32_t Reserved_3 : _B(31 - 28);
  };
} CCM_CCR_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t Reserved_1 : _B(15 - 0);
    __IO uint32_t MMDC_CH1_MASK : _B(16 - 16);
    __IO uint32_t MMDC_CH0_MASK : _B(17 - 17);
    __IO uint32_t Reserved_2 : _B(31 - 18);
  };
} CCM_CCDR_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t FRE_EN_B : _B(0 - 0);
    __IO uint32_t Reserved_1 : _B(3 - 1);
    __IO uint32_t Reserved_2 : _B(4 - 4);
    __IO uint32_t CSOC_READY : _B(5 - 5);
    __IO uint32_t Reserved_3 : _B(31 - 6);
  };
} CCM_CSR_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t PLL3_SW_CLK_SEL : _B(0 - 0);
    __IO uint32_t Reserved_1 : _B(1 - 1);
    __IO uint32_t PLL1_SW_CLK_SEL : _B(2 - 2);
    __IO uint32_t SECONDARY_CLK_SEL : _B(3 - 3);
    __IO uint32_t Reserved_2 : _B(7 - 4);
    __IO uint32_t STEP_SEL : _B(8 - 8);
    __IO uint32_t Reserved_3 : _B(31 - 9);
  };
} CCM_CCSR_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t ARM_PODF : _B(2 - 0);
    __IO uint32_t Reserved_3 : _B(31 - 3);
  };
} CCM_CACRR_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t PERIPH2_CLK2_PODF : _B(2 - 0);
    __IO uint32_t FABRIC_MMDC_PODF : _B(5 - 3);
    __IO uint32_t AXI_SEL : _B(6 - 6);
    __IO uint32_t AXI_ALT_SEL : _B(7 - 7);
    __IO uint32_t IPG_PODF : _B(9 - 8);
    __IO uint32_t AHB_PODF : _B(12 - 10);
    __IO uint32_t Reserved_2 : _B(15 - 13);
    __IO uint32_t AXI_PODF : _B(18 - 16);
    __IO uint32_t Reserved : _B(24 - 19);
    __IO uint32_t PERIPH_CLK_SEL : _B(25 - 25);
    __IO uint32_t PERIPH2_CLK_SEL : _B(26 - 26);
    __IO uint32_t PERIPH_CLK2_PODF : _B(29 - 27);
    __IO uint32_t Reserved_1 : _B(31 - 30);
  };
} CCM_CBCDR_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t Reversed_2 : _B(11 - 0);
    __IO uint32_t PERIPH_CLK2_SEL : _B(13 - 12);
    __IO uint32_t Reversed_3 : _B(17 - 14);
    __IO uint32_t PRE_PERIPH_CLK_SEL : _B(19 - 18);
    __IO uint32_t PERIPH2_CLK2_SEL : _B(20 - 20);
    __IO uint32_t PRE_PERIPH2_CLK_SEL : _B(22 - 21);
    __IO uint32_t LCDIF1_PODF : _B(25 - 23);
    __IO uint32_t Reversed_1 : _B(31 - 26);
  };
} CCM_CBCMR_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t PERCLK_PODF : _B(5 - 0);
    __IO uint32_t PERCLK_CLK_SEL : _B(6 - 6);
    __IO uint32_t QSPI1_CLK_SEL : _B(9 - 7);
    __IO uint32_t SAI1_CLK_SEL : _B(11 - 10);
    __IO uint32_t SAI2_CLK_SEL : _B(13 - 12);
    __IO uint32_t SAI3_CLK_SEL : _B(15 - 14);
    __IO uint32_t USDHC1_CLK_SEL : _B(16 - 16);
    __IO uint32_t USDHC2_CLK_SEL : _B(17 - 17);
    __IO uint32_t BCH_CLK_SEL : _B(18 - 18);
    __IO uint32_t GPMI_CLK_SEL : _B(19 - 19);
    __IO uint32_t Reverved_1 : _B(22 - 20);
    __IO uint32_t ACLK_EIM_SLOW_PODF : _B(25 - 23);
    __IO uint32_t QSPI1_PODF : _B(28 - 26);
    __IO uint32_t ACLK_EIM_SLOW_SEL : _B(30 - 29);
    __IO uint32_t Reserved_2 : _B(31 - 31);
  };
} CCM_CSCMR1_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t Reverved_1 : _B(1 - 0);
    __IO uint32_t CAN_CLK_PODF : _B(7 - 2);
    __IO uint32_t CAN_CLK_SEL : _B(9 - 8);
    __IO uint32_t LDB_DI0_DIV : _B(10 - 10);
    __IO uint32_t LDB_DI1_DIV : _B(11 - 10);
    __IO uint32_t Reverved_2 : _B(18 - 12);
    __IO uint32_t ESAI_CLK_SEL : _B(20 - 19);
  };
} CCM_CSCMR2_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t UART_CLK_PODF : _B(5 - 0);
    __IO uint32_t UART_CLK_SEL : _B(6 - 6);
    __IO uint32_t Reserved_1 : _B(10 - 7);
    __IO uint32_t USDHC1_PODF : _B(13 - 11);
    __IO uint32_t Reserved_2 : _B(15 - 14);
    __IO uint32_t USDHC2_PODF : _B(18 - 16);
    __IO uint32_t BCH_PODF : _B(21 - 19);
    __IO uint32_t GPMI_PODF : _B(24 - 22);
    __IO uint32_t Reserved_3 : _B(27 - 25);
    __IO uint32_t Reserved_4 : _B(31 - 28);
  };
} CCM_CSCDR1_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t SAI1_CLK_PODF : _B(5 - 0);
    __IO uint32_t SAI1_CLK_PRED : _B(8 - 6);
    __IO uint32_t ESAI_CLK_PRED : _B(11 - 9);
    __IO uint32_t Reserved_1 : _B(15 - 12);
    __IO uint32_t SAI3_CLK_PODF : _B(21 - 16);
    __IO uint32_t SAI3_CLK_PRED : _B(24 - 22);
    __IO uint32_t ESAI_CLK_PODF : _B(27 - 25);
    __IO uint32_t Reserved_2 : _B(31 - 28);
  };
} CCM_CS1CDR_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t SAI2_CLK_PODF : _B(5 - 0);
    __IO uint32_t SAI2_CLK_PRED : _B(8 - 6);
    __IO uint32_t LDB_DI0_CLK_SEL : _B(11 - 9);
    __IO uint32_t Reserved_1 : _B(14 - 12);
    __IO uint32_t ENFC_CLK_SEL : _B(17 - 15);
    __IO uint32_t ENFC_CLK_PRED : _B(20 - 18);
    __IO uint32_t ENFC_CLK_PODF : _B(26 - 21);
    __IO uint32_t Reserved_2 : _B(31 - 27);
  };
} CCM_CS2CDR_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t Reserved_1 : _B(19 - 0);
    __IO uint32_t SPDIF0_CLK_SEL : _B(21 - 20);
    __IO uint32_t SPDIF0_CLK_PODF : _B(24 - 22);
    __IO uint32_t SPDIF0_CLK_PRED : _B(27 - 25);
    __IO uint32_t Reserved_2 : _B(31 - 28);
  };
} CCM_CDCDR_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t Reserved_1 : _B(8 - 0);
    __IO uint32_t EPDC_CLK_SEL : _B(11 - 9);
    __IO uint32_t EPDC_PODF : _B(14 - 12);
    __IO uint32_t EPDC_PRE_CLK_SEL : _B(17 - 15);
    __IO uint32_t Reserved : _B(31 - 18);
  };
} CCM_CHSCCDR_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t Reserved : _B(8 - 0);
    __IO uint32_t LCDIF1_CLK_SEL : _B(11 - 9);
    __IO uint32_t LCDIF1_PRED : _B(14 - 12);
    __IO uint32_t LCDIF1_PRE_CLK_SEL : _B(17 - 15);
    __IO uint32_t ECSPI_CLK_SEL : _B(18);
    __IO uint32_t ECSPI_CLK_PODF : _B(24 - 19);
    __IO uint32_t Reserved_2 : _B(31 - 25);
  };
} CCM_CSCDR2_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t Reserved : _B(8 - 0);
    __IO uint32_t CSI_CLK_SEL : _B(10 - 9);
    __IO uint32_t CSI_PODF : _B(13 - 11);
    __IO uint32_t Reserved_1 : _B(31 - 14);
  };
} CCM_CSCDR3_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t AXI_PODF_BUSY : _B(0 - 0);
    __IO uint32_t AHB_PODF_BUSY : _B(1 - 1);
    __IO uint32_t MMDC_PODF_BUSY : _B(2 - 2);
    __IO uint32_t PERIPH2_CLK_SEL_BUSY : _B(3 - 3);
    __IO uint32_t Reserved_1 : _B(4 - 4);
    __IO uint32_t PERIPH_CLK_SEL_BUSY : _B(5 - 5);
    __IO uint32_t Reserved : _B(15 - 6);
    __IO uint32_t ARM_PODF_BUSY : _B(16);
    __IO uint32_t Reserved_2 : _B(31 - 17);
  };
} CCM_CDHIPR_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t VSTBY : _B(8 - 0);
    __IO uint32_t STBY_COUNT : _B(10 - 9);
    __IO uint32_t COSC_PWRDOWN : _B(11 - 11);
    __IO uint32_t Reserved_1 : _B(18 - 12);
    __IO uint32_t BYPASS_MMDC_CH0_LPM_HS : _B(19 - 19);
    __IO uint32_t Reserved_2 : _B(20 - 20);
    __IO uint32_t BYPASS_MMDC_CH1_LPM_HS : _B(21 - 21);
    __IO uint32_t MASK_CORE0_WFI : _B(22 - 22);
    __IO uint32_t Reserved : _B(25 - 23);
    __IO uint32_t MASK_SCU_IDLE : _B(26 - 26);
    __IO uint32_t MASK_L2CC_IDLE : _B(27 - 27);
    __IO uint32_t Reserved_3 : _B(31 - 28);
  };
} CCM_CLPCR_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t LRF_PLL : _B(4 - 0);
    __IO uint32_t Reserved : _B(5 - 1);
    __IO uint32_t COSC_READY : _B(6 - 6);
    __IO uint32_t Reserved_0 : _B(16 - 7);
    __IO uint32_t Reserved_1 : _B(18 - 18);
    __IO uint32_t PERIPH2_CLK_SEL_LOADED : _B(19 - 19);
    __IO uint32_t AHB_PODF_LOADED : _B(20 - 20);
    __IO uint32_t MMDC_PODF_LOADED : _B(21 - 21);
    __IO uint32_t PERIPH_CLK_SEL_LOADED : _B(22 - 22);
    __IO uint32_t Reserved_2 : _B(23 - 23);
    __IO uint32_t Reserved_3 : _B(25 - 24);
    __IO uint32_t ARM_PODF_LOADED : _B(26 - 26);
    __IO uint32_t Reserved_4 : _B(31 - 27);
  };
} CCM_CISR_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t MASK_LRF_PLL : _B(4 - 0);
    __IO uint32_t Reserved_1 : _B(5 - 1);
    __IO uint32_t MASK_COSC_READY : _B(6 - 6);
    __IO uint32_t Reserved_2 : _B(16 - 7);
    __IO uint32_t MASK_AXI_PODF_LOADED : _B(17 - 17);
    __IO uint32_t Reserved_3 : _B(18 - 18);
    __IO uint32_t MASK_PERIPH2_CLK_SEL_LOADED : _B(19 - 19);
    __IO uint32_t MASK_AHB_PODF_LOADED : _B(20 - 20);
    __IO uint32_t MASK_MMDC_PODF_LOADED : _B(21 - 21);
    __IO uint32_t MASK_PERIPH_CLK_SEL_LOADED : _B(22 - 22);
    __IO uint32_t Reserved_4 : _B(25 - 23);
    __IO uint32_t ARM_PODF_LOADED : _B(26 - 26);
    __IO uint32_t Reserved : _B(31 - 27);
  };
} CCM_CIMR_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t CLKO_SEL : _B(3 - 0);
    __IO uint32_t CLKO1_DIV : _B(6 - 4);
    __IO uint32_t CLKO1_EN : _B(7 - 7);
    __IO uint32_t CLK_OUT_SEL : _B(8 - 8);
    __IO uint32_t Reserved_1 : _B(15 - 9);
    __IO uint32_t CLKO2_SEL : _B(20 - 16);
    __IO uint32_t CLKO2_DIV : _B(23 - 21);
    __IO uint32_t CLKO2_EN : _B(24 - 24);
    __IO uint32_t Reserved_2 : _B(31 - 25);
  };
} CCM_CCOSR_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t PMIC_DELAY_SCALER : _B(0 - 0);
    __IO uint32_t Reserved_2 : _B(1 - 1);
    __IO uint32_t MMDC_EXT_CLK_DIS : _B(2 - 2);
    __IO uint32_t Reserved_3 : _B(3 - 3);
    __IO uint32_t EFUSE_PROG_SUPPLY_GATE : _B(4 - 4);
    __IO uint32_t Reserved_4 : _B(6 - 5);
    __IO uint32_t Reserved_5 : _B(8 - 7);
    __IO uint32_t Reserved_6 : _B(13 - 9);
    __IO uint32_t SYS_MEM_DS_CTRL : _B(15 - 14);
    __IO uint32_t FPL : _B(16 - 16);
    __IO uint32_t INT_MEM_CLK_LPM : _B(17 - 17);
    __IO uint32_t Reserved_7 : _B(31 - 18);
  };
} CCM_CGPR_t;

typedef union CCM_CCGR_t
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t CG0 : _B(1 - 0);
    __IO uint32_t CG1 : _B(3 - 2);
    __IO uint32_t CG2 : _B(5 - 4);
    __IO uint32_t CG3 : _B(7 - 6);
    __IO uint32_t CG4 : _B(9 - 8);
    __IO uint32_t CG5 : _B(11 - 10);
    __IO uint32_t CG6 : _B(13 - 12);
    __IO uint32_t CG7 : _B(15 - 14);
    __IO uint32_t CG8 : _B(17 - 16);
    __IO uint32_t CG9 : _B(19 - 18);
    __IO uint32_t CG10 : _B(21 - 20);
    __IO uint32_t CG11 : _B(23 - 22);
    __IO uint32_t CG12 : _B(25 - 24);
    __IO uint32_t CG13 : _B(27 - 26);
    __IO uint32_t CG14 : _B(29 - 28);
    __IO uint32_t CG15 : _B(31 - 30);
  };
} CCM_CCGRO_t, CCM_CCGR1_t, CCM_CCGR2_t, CCM_CCGR3_t, CCM_CCGR4_t, CCM_CCGR5_t, CCM_CCGR6_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t Reserved_1 : _B(4 - 0);
    __IO uint32_t MOD_EN_OV_GPT : _B(5 - 5);
    __IO uint32_t MOD_EN_OV_EPIT : _B(6 - 6);
    __IO uint32_t MOD_EN_USDHC : _B(7 - 7);
    __IO uint32_t Reserved_2 : _B(27 - 8);
    __IO uint32_t MOD_EN_OV_CAN2_CPI : _B(28 - 28);
    __IO uint32_t Reserved_3 : _B(29 - 29);
    __IO uint32_t MOD_EN_OV_CAN1_CPI : _B(30 - 30);
    __IO uint32_t Reserved_4 : _B(31 - 31);
  };
} CCM_CMEOR_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t DIV_SELECT : _B(6 - 0);
    __IO uint32_t Reserved_1 : _B(11 - 7);
    __IO uint32_t POWERDOWN : _B(12 - 12);
    __IO uint32_t ENABLE : _B(13 - 12);
    __IO uint32_t BYPASS_CLK_SRC : _B(15 - 14);
    __IO uint32_t Reserved_3 : _B(16 - 16);
    __IO uint32_t Reserved_2 : _B(18 - 17);
    __IO uint32_t PLL_SEL : _B(19 - 19);
    __IO uint32_t Reserved : _B(30 - 20);
    __IO uint32_t LOCK : _B(31 - 31);
  };
} CCM_ANALOG_PLL_ARM_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t DIV_SELECT : _B(1 - 0);
    __IO uint32_t Reserved_1 : _B(5 - 2);
    __IO uint32_t EN_USB_CLKS : _B(6 - 6);
    __IO uint32_t Reserved_2 : _B(11 - 7);
    __IO uint32_t POWER : _B(12 - 12);
    __IO uint32_t ENABLE : _B(13 - 13);
    __IO uint32_t BYPASS_CLK_SRC : _B(15 - 14);
    __IO uint32_t Reserved_3 : _B(16 - 16);
    __IO uint32_t Reserved_4 : _B(30 - 17);
    __IO uint32_t LOCK : _B(31 - 31);
  };
} CCM_ANALOG_PLL_USB1_t, CCM_ANALOG_PLL_USB2_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t DIV_SELECT : _B(0 - 0);
    __IO uint32_t Reserved_1 : _B(6 - 1);
    __IO uint32_t Reserved_2 : _B(11 - 7);
    __IO uint32_t ENABLE : _B(13 - 13);
    __IO uint32_t BYPASS_CLK_SRC : _B(15 - 14);
    __IO uint32_t Reserved_3 : _B(16 - 16);
    __IO uint32_t Reserved_4 : _B(17 - 17);
    __IO uint32_t PFD_OFFSET_EN : _B(18 - 18);
    __IO uint32_t Reserved_5 : _B(30 - 19);
    __IO uint32_t LOCK : _B(31 - 31);
  };
} CCM_ANALOG_PLL_SYS_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t STEP : _B(14 - 0);
    __IO uint32_t ENABLE : _B(15 - 15);
    __IO uint32_t STOP : _B(31 - 16);
  };
} CCM_ANALOG_PLL_SYS_SS_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t A : _B(29 - 0);
    __IO uint32_t Reserved_1 : _B(31 - 30);
  };
} CCM_ANALOG_PLL_SYS_NUM_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t B : _B(29 - 0);
    __IO uint32_t Reserved_1 : _B(31 - 30);
  };
} CCM_ANALOG_PLL_SYS_DENOM_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t DIV_SELECT : _B(6 - 0);
    __IO uint32_t Reserved_1 : _B(11 - 7);
    __IO uint32_t POWERDOWN : _B(12 - 12);
    __IO uint32_t ENABLE : _B(13 - 13);
    __IO uint32_t BYPASS_CLK_SRC : _B(15 - 14);
    __IO uint32_t Reserved_2 : _B(16 - 16);
    __IO uint32_t Reserved_3 : _B(17 - 17);
    __IO uint32_t PFD_OFFSET_EN : _B(18 - 18);
    __IO uint32_t POST_DIV_SELECT : _B(20 - 19);
    __IO uint32_t Reserved_4 : _B(21 - 21);
    __IO uint32_t Reserved_5 : _B(30 - 22);
    __IO uint32_t LOCK : _B(31 - 31);
  };
} CCM_ANALOG_PLL_AUDIO_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t A : _B(29 - 0);
    __IO uint32_t Reserved : _B(31 - 30);
  };
} CCM_ANALOG_PLL_AUDIO_NUM_t;
typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t B : _B(29 - 0);
    __IO uint32_t Reserved : _B(31 - 30);
  };
} CCM_ANALOG_PLL_AUDIO_DENOM_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t DIV_SELECT : _B(6 - 0);
    __IO uint32_t Reserved_1 : _B(11 - 7);
    __IO uint32_t POWERDOWN : _B(12 - 12);
    __IO uint32_t ENABLE : _B(13 - 13);
    __IO uint32_t BYPASS_CLK_SRC : _B(15 - 14);
    __IO uint32_t Reserved_2 : _B(16 - 16);
    __IO uint32_t Reserved_3 : _B(17 - 17);
    __IO uint32_t PFD_OFFSET_EN : _B(18 - 18);
    __IO uint32_t POST_DIV_SELECT : _B(20 - 19);
    __IO uint32_t Reserved_4 : _B(21 - 21);
    __IO uint32_t Reserved_5 : _B(30 - 22);
    __IO uint32_t LOCK : _B(31 - 31);
  };
} CCM_ANALOG_PLL_VIDEO_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t A : _B(29 - 0);
    __IO uint32_t Reserved : _B(31 - 30);
  };
} CCM_ANALOG_PLL_VIDEO_NUM_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t B : _B(29 - 0);
    __IO uint32_t Reserved : _B(31 - 30);
  };
} CCM_ANALOG_PLL_VIDEO_DENOM_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t ENET0_DIV_SELECT : _B(1 - 0);
    __IO uint32_t ENET1_DIV_SELECT : _B(3 - 2);
    __IO uint32_t Reserved_1 : _B(6 - 4);
    __IO uint32_t Reserved_2 : _B(11 - 7);
    __IO uint32_t POWERDOWN : _B(12 - 12);
    __IO uint32_t ENET1_125M_EN : _B(13 - 13);
    __IO uint32_t BYPASS_CLK_SRC : _B(15 - 14);
    __IO uint32_t Reserved_03 : _B(16 - 16);
    __IO uint32_t Reserved_3 : _B(17 - 17);
    __IO uint32_t PFD_OFFSET_EN : _B(18 - 18);
    __IO uint32_t ENABLE_125M : _B(19 - 19);
    __IO uint32_t ENET2_125M_EN : _B(20 - 20);
    __IO uint32_t ENET_25M_REF_EN : _B(21 - 21);
    __IO uint32_t Reserved_4 : _B(30 - 22);
    __IO uint32_t LOCK : _B(31 - 31);
  };
} CCM_ANALOG_PLL_ENET_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t PFD0_FRAC : _B(5 - 0);
    __IO uint32_t PFD0_STABLE : _B(6 - 6);
    __IO uint32_t PFD0_CLKGATE : _B(7 - 7);
    __IO uint32_t PFD1_FRAC : _B(13 - 8);
    __IO uint32_t PFD1_STABLE : _B(14 - 14);
    __IO uint32_t PFD1_CLKGATE : _B(15 - 15);
    __IO uint32_t PFD2_FRAC : _B(21 - 16);
    __IO uint32_t PFD2_STABLE : _B(22 - 22);
    __IO uint32_t PFD2_CLKGATE : _B(23 - 23);
    __IO uint32_t PFD3_FRAC : _B(29 - 24);
    __IO uint32_t PFD3_STABLE : _B(30 - 30);
    __IO uint32_t PFD3_CLKGATE : _B(31 - 31);
  };
} CCM_ANALOG_PFD_480_t, CCM_ANALOG_PFD_528_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t REFTOP_PWD : _B(0 - 0);
    __IO uint32_t Reserved : _B(2 - 1);
    __IO uint32_t REFTOP_SELFBIASOFF : _B(3 - 3);
    __IO uint32_t REFTOP_VBGADJ : _B(6 - 4);
    __IO uint32_t REFTOP_VBGUP : _B(7 - 7);
    __IO uint32_t Reserved_1 : _B(9 - 8);
    __IO uint32_t STOP_MODE_CONFIG : _B(11 - 10);
    __IO uint32_t DISCON_HIGH_SNVS : _B(12 - 12);
    __IO uint32_t OSC_I : _B(14 - 13);
    __IO uint32_t OSC_XTALOK : _B(15 - 15);
    __IO uint32_t OSC_XTALOK_EN : _B(16 - 16);
    __IO uint32_t Reserved_2 : _B(24 - 17);
    __IO uint32_t CLKGATE_CTRL : _B(25 - 25);
    __IO uint32_t CLKGATE_DELAY : _B(28 - 26);
    __IO uint32_t RTC_XTAL_SOURCE : _B(29 - 29);
    __IO uint32_t XTAL_24M_PWD : _B(30 - 30);
    __IO uint32_t VID_PLL_PREDIV : _B(31 - 31);
  };
} CCM_ANALOG_MISC0_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t LVDS1_CLK_SEL : _B(4 - 0);
    __IO uint32_t Reserved_1 : _B(9 - 5);
    __IO uint32_t LVDSCLK1_OBEN : _B(10 - 10);
    __IO uint32_t Reserved_2 : _B(11 - 11);
    __IO uint32_t LVDSCLK1_IBEN : _B(12 - 12);
    __IO uint32_t Reserved_3 : _B(13 - 13);
    __IO uint32_t Reserved_4 : _B(15 - 14);
    __IO uint32_t PFD_480_AUTOGATE_EN : _B(16 - 16);
    __IO uint32_t PFD_528_AUTOGATE_EN : _B(17 - 17);
    __IO uint32_t Reserved_5 : _B(26 - 18);
    __IO uint32_t IRQ_TEMPPANIC : _B(27 - 27);
    __IO uint32_t IRQ_TEMPLOW : _B(28 - 28);
    __IO uint32_t IRQ_TEMPHIGH : _B(29 - 29);
    __IO uint32_t IRQ_ANA_BO : _B(30 - 30);
    __IO uint32_t IRQ_DIG_BO : _B(31 - 31);
  };
} CCM_ANALOG_MISC1_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t REG0_BO_OFFSET : _B(2 - 0);
    __IO uint32_t REG0_BO_STATUS : _B(3 - 3);
    __IO uint32_t Reserved_1 : _B(4 - 4);
    __IO uint32_t REG0_ENABLE_BO : _B(5 - 5);
    __IO uint32_t REG0_OK : _B(6 - 6);
    __IO uint32_t PLL3_disable : _B(7 - 7);
    __IO uint32_t REG1_BO_OFFSET : _B(10 - 8);
    __IO uint32_t REG1_BO_STATUS : _B(11 - 11);
    __IO uint32_t Reserved_2 : _B(12 - 12);
    __IO uint32_t REG1_ENABLE_BO : _B(13 - 13);
    __IO uint32_t REG1_OK : _B(14 - 14);
    __IO uint32_t AUDIO_DIV_LSB : _B(15 - 15);
    __IO uint32_t REG2_BO_OFFSET : _B(18 - 16);
    __IO uint32_t REG2_BO_STATUS : _B(19 - 19);
    __IO uint32_t Reserved_3 : _B(20 - 20);
    __IO uint32_t REG2_ENABLE_BO : _B(21 - 21);
    __IO uint32_t REG2_OK : _B(22 - 22);
    __IO uint32_t AUDIO_DIV_MSB : _B(23 - 23);
    __IO uint32_t REG0_STEP_TIME : _B(25 - 24);
    __IO uint32_t REG1_STEP_TIME : _B(27 - 26);
    __IO uint32_t REG2_STEP_TIME : _B(29 - 28);
    __IO uint32_t VIDEO_DIV : _B(31 - 30);
  };
} CCM_ANALOG_MISC2_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t MUX_MODE : _B(3 - 0);
    __IO uint32_t SION : _B(4 - 4);
    __IO uint32_t Reserved : _B(31 - 5);
  };
} IOMUXC_MUX_t;
/*
* 不同的pin脚会有不同的位域，但是基本结构是一样的
*/
typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t SRE : _B(0 - 0);        // 压摆率
    __IO uint32_t Reserved_1 : _B(2 - 1); //
    __IO uint32_t DSE : _B(5 - 3);        // 驱动力
    __IO uint32_t SPEED : _B(7 - 6);      // 速度
    __IO uint32_t Reserved_2 : _B(10 - 8);
    __IO uint32_t ODE : _B(11 - 11); // 开路输出使用能
    __IO uint32_t PKE : _B(12 - 12); // 上下拉/状态保持器使能
    __IO uint32_t PUE : _B(13 - 13); // 作为输入时，上下拉/状态保持功能选择
    __IO uint32_t PUS : _B(15 - 14); // 设置上下拉电阻大小
    __IO uint32_t HYS : _B(16 - 16); // 使能迟滞比较器
    __IO uint32_t Reserved_3 : _B(31 - 17);
  };
} IOMUXC_PAD_t;

#define IOMUXC_PAD_SRE_SLOW 0
#define IOMUXC_PAD_SRE_FAST 1

#define IOMUXC_PAD_DSE_R0_0 0
#define IOMUXC_PAD_DSE_R0_1 1
#define IOMUXC_PAD_DSE_R0_2 2
#define IOMUXC_PAD_DSE_R0_3 3
#define IOMUXC_PAD_DSE_R0_4 4
#define IOMUXC_PAD_DSE_R0_5 5
#define IOMUXC_PAD_DSE_R0_6 6
#define IOMUXC_PAD_DSE_R0_7 7

#define IOMUXC_PAD_SPEED_LOW 0
#define IOMUXC_PAD_SPEED_MID 1
#define IOMUXC_PAD_SPEED_MAX 3

#define IOMUXC_PAD_ODE_EN 1
#define IOMUXC_PAD_ODE_DEN 0

#define IOMUXC_PAD_PKE_EN 1
#define IOMUXC_PAD_PKE_DEN 0

#define IOMUXC_PAD_PUS_DOWN 0
#define IOMUXC_PAD_PUS_UP47 1
#define IOMUXC_PAD_PUS_UP100 2
#define IOMUXC_PAD_PUS_UP22 3

#define IOMUXC_PAD_HYS_EN 1
#define IOMUXC_PAD_HYS_DEN 0

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t EN : _B(0 - 0);         // 0->disable, 1->enable
    __IO uint32_t ENMOD : _B(1 - 1);      // 0->计数器从上次停止的值开始, 1->重新加载开始
    __IO uint32_t OCIEN : _B(2 - 2);      // Output cmp interrupt 0->disable, 1->enable
    __IO uint32_t RLD : _B(3 - 3);        // counter reload ctrl 0->free running, 1->set and forget
    __IO uint32_t PRESCALAR : _B(15 - 4); // 时钟分频值
    __IO uint32_t SWR : _B(16 - 16);      // 软复位,写1进行复位， 为1时表示正在复位， 0时复位结束
    __IO uint32_t IOVW : _B(17 - 17);     // 计数器复写使能， 0->不复写， 1->复写，并重新计数
    __IO uint32_t DBGEN : _B(18 - 18);    //  不关心
    __IO uint32_t WAITEN : _B(19 - 19);   //  不关心
    __IO uint32_t Reserved_1 : _B(20 - 20);
    __IO uint32_t STOPEN : _B(21 - 21); // 不关心
    __IO uint32_t OM : _B(23 - 22);     // 输出模式 00->断开， 01->转换, 10->清除 11->设置
    __IO uint32_t CLKSRC : _B(25 - 24); // 时钟源选择： 00 off, 01 外部时钟(ipgclk), 10 高频时钟(ipgclk_highfreq)， 11 低频时钟(ipgclk_32k)
    __IO uint32_t Reserved_2 : _B(31 - 26);
  };
} EPITx_CR_t, EPIT1_CR_t, EPIT2_CR_t;
typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t OCIF : _B(0 - 0); // 中断标志位
    __IO uint32_t Reserved_1 : _B(31 - 1);
  };
} EPITx_SR_t, EPIT1_SR_t, EPIT2_SR_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t LOAD : _B(31 - 0);
  };
} EPITx_LR_t, EPIT1_LR_t, EPIT2_LR_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t COMPARE : _B(31 - 0); // 比较器的值
  };
} EPITx_CMPR_t, EPIT1_CMPR_t, EPIT2_CMPR_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t COUNT : _B(31 - 0); // 比较器的值
  };
} EPITx_CNR_t, EPIT1_CNR_t, EPIT2_CNR_t;

/*************************** GPT ******************************/

// Control Register
typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t EN : _B(0 - 0);       // 使用能位
    __IO uint32_t ENMOD : _B(1 - 1);    // 0 使用上次遗留的值, 1 复位为 0
    __IO uint32_t DBGEN : _B(2 - 2);    // xxx
    __IO uint32_t WAITEN : _B(3 - 3);   // xxx
    __IO uint32_t DOZEEN : _B(4 - 4);   // xxx
    __IO uint32_t STOPEN : _B(5 - 5);   // xxx
    __IO uint32_t CLKSRC : _B(8 - 6);   // 时钟选择 0 NONE, 1 IPG_CKL, 2 ...
    __IO uint32_t FRR : _B(9 - 9);      // 0 restart mode 只有 比较通道1支持, 1 FreeRun mode
    __IO uint32_t EN_24M : _B(10 - 10); //  xxx
    __IO uint32_t SWR : _B(15 - 15);    //  软复位
    __IO uint32_t IM1 : _B(17 - 16);    //  输入通道捕获模式
    __IO uint32_t IM2 : _B(19 - 18);    //  ...
    __IO uint32_t OM1 : _B(23 - 20);    //
    __IO uint32_t OM2 : _B(25 - 23);    //
    __IO uint32_t IM3 : _B(28 - 26);    //
    __IO uint32_t FO1 : _B(29 - 29);    //
    __IO uint32_t FO2 : _B(30 - 30);    //
    __IO uint32_t FO3 : _B(31 - 31);    //
  };
} GPTx_CR_t, GPT1_CR_t, GPT2_CR_t;
// Prescaler Register
typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t PRESCALER : _B(11 - 0);     // src_clk 分频
    __IO uint32_t PRESCALER24M : _B(15 - 12); // 24_clk 分频
    __IO uint32_t UUSER : _B(31 - 16);        // 24_clk 分频
  };
} GPTx_PR_t, GPT1_PR_t, GPT2_PR_t;
// Status Register
typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t OF1 : _B(0 - 0);            //
    __IO uint32_t OF2 : _B(1 - 1);            //
    __IO uint32_t OF3 : _B(2 - 2);            // 输出比较事件是否出现
    __IO uint32_t IF1 : _B(3 - 3);            //
    __IO uint32_t IF2 : _B(4 - 4);            // 输入事件 ...
    __IO uint32_t ROV : _B(5 - 5);            // 计数器到最大值时，发生的溢出事件
    __IO uint32_t PRESCALER24M : _B(15 - 12); // 24_clk 分频
    __IO uint32_t UUSER : _B(31 - 16);        //
  };
} GPTx_SR_t, GPT1_SR_t, GPT2_SR_t;
// Interrupt Register
typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t OF1IE : _B(0 - 0);  //
    __IO uint32_t OF2IE : _B(1 - 1);  //
    __IO uint32_t OF3IE : _B(2 - 2);  // 输出比较通道n中断使用能
    __IO uint32_t IF1IE : _B(3 - 3);  //
    __IO uint32_t IF2IE : _B(4 - 4);  // 输入捕获比较通道n中断使能
    __IO uint32_t ROVIE : _B(4 - 4);  // 回滚中断使用能
    __IO uint32_t UUSER : _B(31 - 5); //
  };
} GPTx_IR_t, GPT1_IR_t, GPT2_IR_t;

// output Commpare Register
typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t COMP : _B(31 - 0);
  };
} GPTx_OCRx_t, GPTx_OCR1_t, GPTx_OCR2_t, GPTx_OCR3_t;

// input capture register
typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t CAPT : _B(31 - 0);
  };
} GPTx_ICRx_t, GPTx_ICR1_t, GPTx_ICR2_t;

// counter register
typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t COUNT : _B(31 - 0);
  };
} GPTx_CNT_t;

/************************* uart ***********************************/
// Receiver Register
typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t RX_DATA : _B(7 - 0); // 接收数据
    __IO uint32_t Reserved : _B(9 - 8);
    __IO uint32_t PRERR : _B(10 - 10); // 奇偶校验错误标记
    __IO uint32_t BRK : _B(11 - 11);
    __IO uint32_t OVRRUN : _B(13 - 13); // 接收缓冲区满了
    __IO uint32_t ERR : _B(14 - 14);    //  检测到错误
    __IO uint32_t CHRRDY : _B(15 - 15); // RX_DATAT中是否有数据
    __IO uint32_t Reserved_1 : _B(31 - 16);
  };
} UARTx_URXD_t;

// Transmitter Register
typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t TX_DATA : _B(7 - 0); // 发数据
    __IO uint32_t Reserved : _B(15 - 8);
    __IO uint32_t Reserved_1 : _B(31 - 16);
  };
} UARTx_UTXD_t;
// Control Register1
typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t UARTEN : _B(0 - 0); // 使能位
    __IO uint32_t DOZE : _B(1 - 1);
    __IO uint32_t ATDMAEN : _B(2 - 2);  // dma ?
    __IO uint32_t TXDMAEN : _B(3 - 3);  // dma ?
    __IO uint32_t SNDBRK : _B(4 - 4);   //
    __IO uint32_t RTSDEN : _B(5 - 5);   //
    __IO uint32_t TXMPTYEN : _B(6 - 6); // Transmitter Empty Interrupt Enable
    __IO uint32_t IREN : _B(7 - 7);     // Infrared Interface Enable
    __IO uint32_t RXDMAEN : _B(8 - 8);  // Receive Ready DMA Enable
    __IO uint32_t RRDYEN : _B(9 - 9);   // Receiver Ready Interrupt Enable
    __IO uint32_t ICD : _B(11 - 10);
    __IO uint32_t IDEN : _B(12 - 12);
    __IO uint32_t TRDYEN : _B(13 - 13); // Transmitter Ready Interrupt Enable
    __IO uint32_t ADBR : _B(14 - 14);   // Automatic Detection of Baud Rate
    __IO uint32_t ADEN : _B(15 - 15);   // Automatic Baud Rate Detection Interrupt Enable
    __IO uint32_t Reserved_1 : _B(31 - 16);
  };
} UARTx_UCR1_t;

// Control Register2
typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t SRST : _B(0 - 0); // Software Reset 可以清空fifo等数据
    __IO uint32_t RXEN : _B(1 - 1);
    __IO uint32_t TXEN : _B(2 - 2);
    __IO uint32_t ATEN : _B(3 - 3);
    __IO uint32_t RTSEN : _B(4 - 4); //
    __IO uint32_t WS : _B(5 - 5);    // 0 7bit 1 8bit
    __IO uint32_t STPB : _B(6 - 6);  // 0 1bit, 1 2bit
    __IO uint32_t PROE : _B(7 - 7);  // 0 Even parity, 1 Odd parity
    __IO uint32_t PREN : _B(8 - 8);  // Parity Enable
    __IO uint32_t RTEC : _B(10 - 9);
    __IO uint32_t ESCEN : _B(11 - 11);
    __IO uint32_t CTS : _B(12 - 12);
    __IO uint32_t CTSC : _B(13 - 13);
    __IO uint32_t IRTS : _B(14 - 14); // // 忽略RTS引脚
    __IO uint32_t ESCI : _B(15 - 15);
    __IO uint32_t Reserved_1 : _B(31 - 16);
  };
} UARTx_UCR2_t;

// Control Register3
typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t ACIEN : _B(0 - 0);
    __IO uint32_t INVT : _B(1 - 1);
    __IO uint32_t RXDMUXSEL : _B(2 - 2);
    __IO uint32_t DTRDEN : _B(3 - 3);
    __IO uint32_t AWAKEN : _B(4 - 4);
    __IO uint32_t AIRINTEN : _B(5 - 5);
    __IO uint32_t RXDSEN : _B(6 - 6);
    __IO uint32_t ADNIMP : _B(7 - 7);
    __IO uint32_t RI : _B(8 - 8);
    __IO uint32_t DCD : _B(9 - 9);
    __IO uint32_t DSR : _B(10 - 10);
    __IO uint32_t FRAERREN : _B(11 - 11);
    __IO uint32_t PARERREN : _B(12 - 12);
    __IO uint32_t DTREN : _B(13 - 13);
    __IO uint32_t DPEC : _B(15 - 14);
    __IO uint32_t Reserved_1 : _B(31 - 16);
  };
} UARTx_UCR3_t;

// Control Register4
typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t OREN : _B(0 - 0);
    __IO uint32_t BKEN : _B(1 - 1);
    __IO uint32_t RXDMUXSEL : _B(2 - 2);
    __IO uint32_t TCEN : _B(3 - 3);
    __IO uint32_t LPBYP : _B(4 - 4);
    __IO uint32_t IRSC : _B(5 - 5);
    __IO uint32_t IDDMAEN : _B(6 - 6);
    __IO uint32_t WKEN : _B(7 - 7);
    __IO uint32_t ENIRI : _B(8 - 8);
    __IO uint32_t INVR : _B(9 - 9);
    __IO uint32_t CTSTL : _B(15 - 10);
    __IO uint32_t Reserved_1 : _B(31 - 16);
  };
} UARTx_UCR4_t;

//  FIFO Control Register
typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t RXTL : _B(5 - 0); // 接收到几个字节后产生中断
    __IO uint32_t DCEDTE : _B(6 - 6);
    __IO uint32_t RFDIV : _B(9 - 7); // ？
    __IO uint32_t TXTL : _B(15 - 10);
    __IO uint32_t Reserved_1 : _B(31 - 16);
  };
} UARTx_UFCR_t;
// UART Status Register 1
typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t Reserved_1 : _B(2 - 0);
    __IO uint32_t SAD : _B(3 - 3);
    __IO uint32_t AWAKE : _B(4 - 4); // ？
    __IO uint32_t AIRINT : _B(5 - 5);
    __IO uint32_t RXDS : _B(6 - 6);
    __IO uint32_t DTRD : _B(7 - 7);
    __IO uint32_t AGTIM : _B(8 - 8);
    __IO uint32_t RRDY : _B(9 - 9);      // Receiver Ready Interrupt / DMA Flag
    __IO uint32_t FRAMERR : _B(10 - 10); // Frame Error Interrupt Flag.
    __IO uint32_t ESCF : _B(11 - 11);    // Escape Sequence Interrupt Flag.
    __IO uint32_t RTSD : _B(12 - 12);
    __IO uint32_t TRDY : _B(13 - 13);
    __IO uint32_t RTSS : _B(14 - 14);
    __IO uint32_t PARITYERR : _B(15 - 15);
    __IO uint32_t Reserved_2 : _B(31 - 16); // Parity Error Interrupt Flag.
  };
} UARTx_USR1_t;
// UART Status Register 2
typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t RDR : _B(0 - 0);  //Receive Data Ready-
    __IO uint32_t ORE : _B(1 - 1);  //Overrun Error
    __IO uint32_t BRCD : _B(2 - 2); //BREAK Condition Detected.
    __IO uint32_t TXDC : _B(3 - 3); // Transmitter Complete.
    __IO uint32_t RTSF : _B(4 - 4); // ？
    __IO uint32_t DCDIN : _B(5 - 5);
    __IO uint32_t DCDDELT : _B(6 - 6);
    __IO uint32_t WAKE : _B(7 - 7);
    __IO uint32_t IRINT : _B(8 - 8);
    __IO uint32_t RIIN : _B(9 - 9);     // Receiver Ready Interrupt / DMA Flag
    __IO uint32_t RIDELT : _B(10 - 10); // Frame Error Interrupt Flag.
    __IO uint32_t ACST : _B(11 - 11);   // Escape Sequence Interrupt Flag.
    __IO uint32_t IDLE : _B(12 - 12);
    __IO uint32_t DTRF : _B(13 - 13);
    __IO uint32_t TXFE : _B(14 - 14);
    __IO uint32_t ADET : _B(15 - 15);
    __IO uint32_t Reserved_1 : _B(31 - 16); // Parity Error Interrupt Flag.
  };
} UARTx_USR2_t;

// Escape Character
typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t ESC_CHAR : _B(7 - 0);
    __IO uint32_t Reserved_1 : _B(31 - 8);
  };
} UARTx_UESC_t;

//UART Escape Timer Register
typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t TIM : _B(11 - 0);
    __IO uint32_t Reserved_1 : _B(31 - 12);
  };
} UARTx_UTIM_t;

//UART BRM Incremental Register
typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t INC : _B(15 - 0);
    __IO uint32_t Reserved_1 : _B(31 - 16);
  };
} UARTx_UBIR_t;

//UART BRM Modulator Register
typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t MOD : _B(15 - 0);
    __IO uint32_t Reserved_1 : _B(31 - 16);
  };
} UARTx_UBMR_t;

//UART One Millisecond Register
typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t ONEMS : _B(23 - 0);
    __IO uint32_t Reserved_1 : _B(31 - 24);
  };
} UARTx_ONEMS_t;

//UART Test Register
typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t SOFTRST : _B(0 - 0);
    __IO uint32_t Reserved_1 : _B(2 - 1);
    __IO uint32_t RXFULL : _B(3 - 3);
    __IO uint32_t TXFULL : _B(4 - 4);
    __IO uint32_t RXEMPTY : _B(5 - 5);
    __IO uint32_t TXEMPTY : _B(6 - 6);
    __IO uint32_t Reserved_2 : _B(8 - 7);
    __IO uint32_t RXDBG : _B(9 - 9);
    __IO uint32_t LOOPIR : _B(10 - 10);
    __IO uint32_t DBGEN : _B(11 - 11);
    __IO uint32_t LOOP : _B(12 - 12);
    __IO uint32_t FRCPERR : _B(13 - 13);
    __IO uint32_t Reserved_3 : _B(31 - 14);
  };
} UARTx_UTS_t;
// UART RS-485 Mode Control Register
typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t MDEN : _B(0 - 0);
    __IO uint32_t SLAM : _B(1 - 1);
    __IO uint32_t TXB8 : _B(2 - 2);
    __IO uint32_t SADEN : _B(3 - 3);
    __IO uint32_t Reserved : _B(7 - 4);
    __IO uint32_t SLADDR : _B(15 - 8);
    __IO uint32_t Reserved_1 : _B(31 - 16);
  };
} UARTx_UMCR_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t RUN : _B(0 - 0);                // 写1之后开后开始传数，当再次变成0时表示传输完成
    __IO uint32_t DATA_FORMAT_24_BIT : _B(1 - 1); //  WORD_LENGTH = 3时使用， 0x0 ALL_24_BITS_VALID, 1 RGB 18 bpp
    __IO uint32_t DATA_FORMAT_18_BIT : _B(2 - 2); // WORD_LENGTH = 2 时使用
    __IO uint32_t DATA_FORMAT_16_BIT : _B(3 - 3); // WORD_LENGTH = 0 时使用
    __IO uint32_t RSRVDO : _B(4 - 4);
    __IO uint32_t MASTER : _B(5 - 5);                // 1 主机模式
    __IO uint32_t ENABLE_PXPHANDSHAKE : _B(6 - 6);   // 1 主机模式，握手？
    __IO uint32_t RGB_TO_YCBCR422_CSC : _B(7 - 7);   // RGB 转换 YCB ...
    __IO uint32_t WORD_LENGTH : _B(9 - 8);           // 0 16bit, 1 8bit, 2 18bit , 3 24bit
    __IO uint32_t LCD_DATABUS_WIDTH : _B(11 - 10);   // 0 16bit, 1 8bit, 2 18bit , 3 24bit
    __IO uint32_t CSC_DATA_SWIZZL_E : _B(13 - 12);   // 颜色数据顺序， 0 不交换
    __IO uint32_t INPUT_DATA_SWIZZL_E : _B(15 - 14); // 0 不交换
    __IO uint32_t DATA_SELECT : _B(16 - 16);         // Command Mode polarity bit. 0x0 CMD_MODE, 0x1 DATA_MODE
    __IO uint32_t DOTCLK_MODE : _B(17 - 17);         // Set this bit to 1 to make the hardware go into the DOTCLK mode
    __IO uint32_t VSYNC_MODE : _B(18 - 18);          // Setting this bit to 1 will make the eLCDIF hardware go into VSYNC mode.
    __IO uint32_t BYPASS_COUNT : _B(19 - 19);        // must be 1 in DOTCLK and DVI modes of operation.
    __IO uint32_t DVI_MODE : _B(20 - 20);            // 0
    __IO uint32_t SHIFT_NUM_BITS : _B(25 - 21);      // DIV 接口使用
    __IO uint32_t DATA_SHIFT_DIR : _B(26 - 26);      // DIV 接口使用
    __IO uint32_t WAIT_FOR_VSYNC_EDGE : _B(27 - 27); // ？？
    __IO uint32_t READ_WRITEB : _B(28 - 28);         // 主机模式下必须为0
    __IO uint32_t YCBCR422_INPUT : _B(29 - 29);      // 不关心...
    __IO uint32_t CLKGATE : _B(30 - 30);             // 时钟开关，0打开， 1 关闭
    __IO uint32_t SFTRST : _B(31 - 31);              // 下常模式 0， 1将强制重置..
  };

} LCDIF_CTRL_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t RESET : _B(0 - 0);
    __IO uint32_t MODE86 : _B(1 - 1);
    __IO uint32_t BUSY_ENABLE : _B(2 - 2);
    __IO uint32_t RSRVD0 : _B(7 - 3);
    __IO uint32_t VSYNC_EDGEIRQ : _B(8 - 8);
    __IO uint32_t CUR_FRAME_DONE_IRQ : _B(9 - 9);
    __IO uint32_t UNDERFLOW_IRQ : _B(10 - 10);
    __IO uint32_t OVERFLOW_IRQ : _B(11 - 11);
    __IO uint32_t VSYNC_EDGE_IRQ_EN : _B(12 - 12);
    __IO uint32_t CUR_FRAMEDONE_IRQ_EN : _B(13 - 13);
    __IO uint32_t UNDERFLOW_IRQ_EN : _B(14 - 14);
    __IO uint32_t OVERFLOW_IRQ_EN : _B(15 - 15);                    // This bit is set to enable an underflow interrupt in the TXFIFO in the write mode
    __IO uint32_t BYTE_PACKING_FORMAT : _B(19 - 16);                // ?
    __IO uint32_t IRQ_ON_ALTERNATE_FIELDS : _B(20 - 20);            // ?
    __IO uint32_t FIFO_CLEAR : _B(21 - 21);                         // Set this bit to clear all the data in the latency FIFO (LFIFO), TXFIFO and the RXFIFO.
    __IO uint32_t START_INTERL_ACE_FROM_SECOND_FIELD : _B(22 - 22); // ？
    __IO uint32_t INTERLACE_FIELDS : _B(23 - 23);                   // ？
    __IO uint32_t RECOVER_ON_UNDERFLOW : _B(24 - 24);               // ？
    __IO uint32_t BM_ERROR_IRQ : _B(25 - 25);                       // 错误中断位状态
    __IO uint32_t BM_ERROR_IRQ_EN : _B(26 - 26);                    // 主机模式下的错误中断位使能
    __IO uint32_t COMBINE_MPU_WR_STRB : _B(27 - 27);                // MPU 接口
    __IO uint32_t _3 : _B(29 - 28);
    __IO uint32_t _2 : _B(30 - 30);
    __IO uint32_t _1 : _B(31 - 31);
  };

} LCDIF_CTRL1_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t RSRVD0 : _B(0 - 0);
    __IO uint32_t INITIAL_DUMMY_READ : _B(3 - 1);
    __IO uint32_t READ_MODE_NUM_PACKEDSUBWORDS : _B(6 - 4);
    __IO uint32_t READ_MODE_6_BIT_INPUTRSRVD1 : _B(8 - 8);
    __IO uint32_t READ_MODE_OUTPUT_IN_RGB_FORMAT : _B(9 - 9);
    __IO uint32_t READ_PACK_DIR : _B(10 - 10);
    __IO uint32_t RSRVD2 : _B(11 - 11);
    __IO uint32_t EVEN_LINE_PATTERN : _B(14 - 12);
    __IO uint32_t RSRVD3 : _B(15 - 15);
    __IO uint32_t ODD_LINE_PATTERN : _B(18 - 16);
    __IO uint32_t RSRVD4 : _B(19 - 19);
    __IO uint32_t BURST_LEN_8 : _B(20 - 20);
    __IO uint32_t OUTSTANDING_REQS : _B(23 - 21);
    __IO uint32_t RSRVD5 : _B(31 - 24);
  };

} LCDIF_CTRL2_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t H_COUNT : _B(15 - 0);
    __IO uint32_t V_COUNT : _B(31 - 16);
  };

} LCDIF_TRANSFER_COUNT_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t ADDR : _B(31 - 0);
  };

} LCDIF_CUR_BUF_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t ADDR : _B(31 - 0);
  };

} LCDIF_NEXT_BUF_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t DATA_SETUP : _B(7 - 0);
    __IO uint32_t DATA_HOLD : _B(15 - 8);
    __IO uint32_t CMD_SETUP : _B(23 - 16);
    __IO uint32_t CMD_HOLD : _B(31 - 24);
  };

} LCDIF_TIMING_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t VSYNC_PULSE_WIDTH : _B(17 - 0);
    __IO uint32_t HALF_LINE_MODE : _B(18 - 18);
    __IO uint32_t HALF_LINE : _B(19 - 19);
    __IO uint32_t VSYNC_PULSE_WIDTH_UNIT : _B(20 - 20);
    __IO uint32_t VSYNC_PERIOD_UNIT : _B(21 - 21);
    __IO uint32_t RSRVD1 : _B(23 - 22);
    __IO uint32_t ENABLE_POL : _B(24 - 24);
    __IO uint32_t DOTCLK_POL : _B(25 - 25);
    __IO uint32_t HSYNC_POL : _B(26 - 26);
    __IO uint32_t VSYNC_POL : _B(27 - 27);
    __IO uint32_t ENABLEPRESENT : _B(28 - 28);
    __IO uint32_t VSYNC_OEB : _B(29 - 29);
    __IO uint32_t RSRVD2 : _B(31 - 30);
  };

} LCDIF_VDCTRL0_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t VSYNC_PERIOD : _B(31 - 0);
  };

} LCDIF_VDCTRL1_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t HSYNC_PERIOD : _B(17 - 0);
    __IO uint32_t HSYNC_PULSE_WIDTH : _B(31 - 18);
  };

} LCDIF_VDCTRL2_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t VERTICAL_WAIT_CNT : _B(15 - 0);
    __IO uint32_t HORIZONTAL_WAIT_CNT : _B(27 - 16);
    __IO uint32_t VSYNC_ONLY : _B(28 - 28);
    __IO uint32_t MUX_SYNC_SIGNALS : _B(29 - 29);
    __IO uint32_t RSRVD0 : _B(31 - 30);
  };

} LCDIF_VDCTRL3_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t DOTCLK_H_VALID_DATA_CNT : _B(17 - 0);
    __IO uint32_t SYNC_SIGNALS_ON : _B(18 - 18);
    __IO uint32_t RSRVD0 : _B(28 - 19);
    __IO uint32_t DOTCLK_DLY_SEL : _B(31 - 29);
  };

} LCDIF_VDCTRL4_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t H_BLANKING_CNT : _B(11 - 0);
    __IO uint32_t RSRVD0 : _B(15 - 12);
    __IO uint32_t H_ACTIVE_CNT : _B(27 - 16);
    __IO uint32_t RSRVD1 : _B(31 - 28);
  };

} LCDIF_DVICTRL0_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t F2_START_LINE : _B(9 - 0);
    __IO uint32_t F1_END_LINE : _B(19 - 10);
    __IO uint32_t F1_START_LINE : _B(29 - 20);
    __IO uint32_t RSRVD0 : _B(31 - 30);
  };

} LCDIF_DVICTRL1_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t V1_BLANK_END_LINE : _B(9 - 0);
    __IO uint32_t V1_BLANK_START_LINE : _B(19 - 10);
    __IO uint32_t F2_END_LINE : _B(29 - 20);
    __IO uint32_t RSRVD0 : _B(31 - 30);
  };

} LCDIF_DVICTRL2_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t V_LINES_CNT : _B(9 - 0);
    __IO uint32_t V2_BLANK_END_LINE : _B(19 - 10);
    __IO uint32_t V2_BLANK_START_LINE : _B(29 - 20);
    __IO uint32_t RSRVD0 : _B(31 - 30);
  };

} LCDIF_DVICTRL3_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t H_FILL_CNT : _B(7 - 0);
    __IO uint32_t CR_FILL_VALUE : _B(15 - 8);
    __IO uint32_t CB_FILL_VALUE : _B(23 - 16);
    __IO uint32_t Y_FILL_VALUE : _B(31 - 24);
  };

} LCDIF_DVICTRL4_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t CSC_SUBSAMPLE_FILTER : _B(1 - 0);
    __IO uint32_t RSRVD0 : _B(15 - 2);
    __IO uint32_t C0 : _B(25 - 16);
    __IO uint32_t RSRVD1 : _B(31 - 26);
  };

} LCDIF_CSC_COEFF0_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t C1 : _B(9 - 0);
    __IO uint32_t RSRVD0 : _B(15 - 10);
    __IO uint32_t C2 : _B(25 - 16);
    __IO uint32_t RSRVD1 : _B(31 - 26);
  };

} LCDIF_CSC_COEFF1_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t C3 : _B(9 - 0);
    __IO uint32_t RSRVD0 : _B(15 - 10);
    __IO uint32_t C4 : _B(25 - 16);
    __IO uint32_t RSRVD1 : _B(31 - 26);
  };

} LCDIF_CSC_COEFF2_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t C5 : _B(9 - 0);
    __IO uint32_t RSRVD0 : _B(15 - 10);
    __IO uint32_t C6 : _B(25 - 16);
    __IO uint32_t RSRVD1 : _B(31 - 26);
  };

} LCDIF_CSC_COEFF3_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t C7 : _B(9 - 0);
    __IO uint32_t RSRVD0 : _B(15 - 10);
    __IO uint32_t : _B(25 - 16);
    __IO uint32_t RSRVD1 : _B(31 - 26);
  };

} LCDIF_CSC_COEFF4_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t Y_OFFSET : _B(8 - 0);
    __IO uint32_t RSRVDO : _B(15 - 9);
    __IO uint32_t CBCR_OFFSET : _B(24 - 16);
    __IO uint32_t RSRVD1 : _B(31 - 25);
  };

} LCDIF_CSC_OFFSET_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t Y_MAX : _B(7 - 0);
    __IO uint32_t Y_MIN : _B(15 - 8);
    __IO uint32_t CBCR_MAX : _B(23 - 16);
    __IO uint32_t CBCR_MIN : _B(31 - 24);
  };

} LCDIF_CSC_LIMIT_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t DATA_ZERO : _B(7 - 0);
    __IO uint32_t DATA_ONE : _B(15 - 8);
    __IO uint32_t DATA_TWO : _B(23 - 16);
    __IO uint32_t DATA_THREE : _B(31 - 24);
  };

} LCDIF_DATA_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t ADDR : _B(31 - 0);
  };

} LCDIF_BM_ERROR_STAT_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t CRC_VALUE : _B(31 - 0);
  };

} LCDIF_CRC_STAT_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t LFIFO_COUNT : _B(8 - 0);
    __IO uint32_t RSRVDO : _B(23 - 9);
    __IO uint32_t DVI_CURRENT_FIELD : _B(24 - 24);
    __IO uint32_t BUSY : _B(25 - 25);
    __IO uint32_t TXFIFO_EMPTY : _B(26 - 26);
    __IO uint32_t TXFIFO_FULL : _B(27 - 27);
    __IO uint32_t LFIFO_EMPTY : _B(28 - 28);
    __IO uint32_t LFIFO_FULL : _B(29 - 29);
    __IO uint32_t _ : _B(30 - 30);
    __IO uint32_t PRESENT : _B(31 - 31);
  };

} LCDIF_STAT_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t PANIC : _B(8 - 0);
    __IO uint32_t RSRVD1 : _B(15 - 9);
    __IO uint32_t FASTCLOCK : _B(24 - 16);
    __IO uint32_t RSRVD2 : _B(31 - 25);
  };

} LCDIF_THRES_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t AS_ENABLE : _B(0 - 0);
    __IO uint32_t ALPHA_CTRL : _B(2 - 1);
    __IO uint32_t ENABLE_COLORKEY : _B(3 - 3);
    __IO uint32_t FORMAT : _B(7 - 4);
    __IO uint32_t ALPHA : _B(15 - 8);
    __IO uint32_t ROP : _B(19 - 16);
    __IO uint32_t ALPHA_INVERT : _B(20 - 20);
    __IO uint32_t INPUT_DATA_SWIZZLE : _B(22 - 21);
    __IO uint32_t PS_DISABLE : _B(23 - 23);
    __IO uint32_t RVDS1 : _B(26 - 24);
    __IO uint32_t CSI_SYNC_ON_IRQ : _B(27 - 27);
    __IO uint32_t CSI_SYNC_ON_IRQ_EN : _B(28 - 28);
    __IO uint32_t CSI_VSYNC_MODE : _B(29 - 29);
    __IO uint32_t CSI_VSYNC_POL : _B(30 - 30);
    __IO uint32_t CSI_VSYNC_ENABLE : _B(31 - 31);
  };

} LCDIF_AS_CTRL_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t ADDR : _B(31 - 0);
  };

} LCDIF_AS_BUF_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t ADDR : _B(31 - 0);
  };

} LCDIF_AS_NEXT_BUF_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t PIXEL : _B(23 - 0);
    __IO uint32_t RSVD1 : _B(31 - 24);
  };

} LCDIF_AS_CLRKEYLOW_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t PIXEL : _B(23 - 0);
    __IO uint32_t RSVD1 : _B(31 - 24);
  };

} LCDIF_AS_CLRKEYHIGH_t;

typedef union
{
  __IO uint32_t full;
  struct
  {
    __IO uint32_t H_COUNT_DELAY : _B(15 - 0);
    __IO uint32_t V_COUNT_DELAY : _B(31 - 16);
  };

} LCDIF_SYNC_DELAY_t;
// I2C
// 从设备地址
typedef union
{
  __IO uint16_t full;
  struct
  {
    __IO uint16_t Reserved : _B(0 - 0);
    __IO uint16_t ADR : _B(7 - 1);
    __IO uint16_t Reserved_1 : _B(15 - 8);
  };
} I2C1_IADR_t, I2C4_IADR_t, I2C2_IADR_t, I2C3_IADR_t, I2Cx_IADR_t;
// Frequency Divider
typedef union
{
  __IO uint16_t full;
  struct
  {
    __IO uint16_t IC : _B(5 - 0);
    __IO uint16_t Reserved : _B(15 - 6);
  };
} I2C1_IFDR_t, I2C4_IFDR_t, I2C2_IFDR_t, I2C3_IFDR_t, I2Cx_IFDR_t;
typedef union
{
  __IO uint16_t full;
  struct
  {
    __IO uint16_t Reserved : _B(1 - 0);
    __IO uint16_t RSTA : _B(2 - 2);
    __IO uint16_t TXAK : _B(3 - 3); // 0 An acknowledge , 1 No acknowledge 
    __IO uint16_t MTX : _B(4 - 4);  // 0 Receive, 1 Transmit
    __IO uint16_t MSTA : _B(5 - 5); // 1 Master mode
    __IO uint16_t IIEN : _B(6 - 6); // I2C interrupt enable
    __IO uint16_t IEN : _B(7 - 7);  // I2C enable
    __IO uint16_t Reserved_1 : _B(15-8);
  };
} I2Cx_I2CR_t;
typedef union
{
  __IO uint16_t full;
  struct
  {
    __IO uint16_t RXAK : _B(0 - 0);      // ACK
    __IO uint16_t IIF : _B(1 - 1);      // 中断标志位
    __IO uint16_t SRW : _B(2 - 2);
    __IO uint16_t Reserved : _B(3 - 3);
    __IO uint16_t IAL : _B(4 - 4); // 仲裁丢失
    __IO uint16_t IBB : _B(5 - 5); // 0 Bus is idle, 1 ...
    __IO uint16_t IAAS : _B(6 - 6);
    __IO uint16_t ICF : _B(7 - 7);  // 0 Transfer is in progress, 1 Transfer is complete.
    __IO uint16_t Reserved_1 : _B(15 - 8);
  };
} I2C1_I2SR_t, I2C4_I2SR_t, I2C2_I2SR_t, I2C3_I2SR_t, I2Cx_I2SR_t;
typedef union
{
  __IO uint16_t full;
  struct
  {
    __IO uint16_t DATA : _B(7 - 0);
    __IO uint16_t Reserved : _B(15 - 8);
  };
} I2C1_I2DR_t, I2C4_I2DR_t, I2C2_I2DR_t, I2C3_I2DR_t, I2Cx_I2DR_t;
#endif
